package edu.sctu.jsoup.service;

import edu.sctu.jsoup.entity.ChinaCityEntity;
import edu.sctu.jsoup.repo.ChinaCityRepo;
import org.jsoup.nodes.Element;
//import org.jsoup.select.Elements;dpackage edu.sctu.jsoup.service;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.io.IOException;

/**
 * Created by Administrator on 2017/11/19.
 */
@Service                                              //这里表示的是一个注解三个地方都需要注解，这个是必须的
public class ChinaCityService {
    @Autowired                                //这个注解也是非常重要的必须要有，，对应在service里面必须要有
     private ChinaCityRepo chinacityRepo;             //此处相当于实例化该接口
    public void run() throws IOException {                   //相当于程序的main函数，函数的入口
        Document document = Jsoup.connect("https://www.tripadvisor.cn/Lvyou").get();
        //表示链接到某个网页去
        //输出这个网页所有源代码
        Element element = document.select(".tab-body-wrapper").first();    //这里表示的是用选择器选择了该属性下得到所有网页源码表示的东西。
        //我们之所以用select选择器的原因是可以用ID、class、、、选择而另外的没得那么灵活
        Elements ee = element.select("a");                      //这里表示的是选择了该上选择之后在选择a标签


       // System.out.println(ee.text());                                           //此处我们需要关注的一点是.text()表示的是打印该元素下的所有文字。而且选择器的返回值类型和那些的是不同的

        for (int i=0;i<ee.size();i++){                                                 //表示的是遍历，，，为了方便我们简单设置了的活塞的自动大小
            ChinaCityEntity chinacityEntity=new ChinaCityEntity();                     //这里我们需要对对象进行操作所以我们需要实例化一个对象。
            String s= ee.get(i).attr("href");//ee表示的是我们之前选择出来的全部a标签，get（i）表示得到第i个a标签，attr表示选择属性href的所有内容
           // System.out.println();
            s=s.substring(s.indexOf("-")+2,s.lastIndexOf("-"));                   //切割的关键字substring，  indexOf（"-"）表示从左往右寻找到该符号切割并且保留该符号。
                                                                                       // lastIndexOf表示从右往左遇见第一个符号时我们就切割但是不保存该符号。+2表示以符号开始计算的第二位切割开来
            s=s.substring(0,s.lastIndexOf("-"));                                  //这里表示的是继续切割，0表示从最开始，然后从右往左遇见符号（第一个）就切割。
            chinacityEntity.setCode(s);                                                //我们为实例化的对象设置一些属性
            chinacityEntity.setName(ee.get(i).text());                                 //我们为这个实例化的对象设置了名字个属性。从ee中获得遍历每一个元素下a标签并打印所有的文字内容
            chinacityRepo.save(chinacityEntity);                                     //在该接口处保存该类似于数据库中的表单
        }


    }
}

